package Model;

import java.awt.Color;
import java.util.ArrayList;

/**
 * 
 * A hangya hagyja maga után, azt indikálja hogy ott járt egy hangya, ez idővel eltűnik.
 *
 */

public class Szag extends NemMozgoDinEntitas
{
	/**
	 * A Szag osztály paraméteres konstruktora.
	 * @param ny Referencia egy INyilvántartó interfészt megvalósító objektumra.
	 */
	public Szag(INyilvantarto ny)
	{
		super(ny);
		elteltKorok=0;
		color = Color.YELLOW;
	}

	/** A létrehozás óta eltelt játékkörök száma. */
	private int elteltKorok;
	
	/** 
	 * Minden körben bejelenti a körülötte lévő Mezőknek, hogy ott tartózkodik.
	 * Ezen felül inkrementálja az eltelt köröket, és ha ez eléri a szabályokban lefektetett értéket akkor eltűnik a Játéktérről.
	 */
	public void tick()
	{
		//lekérjük a szomszédokat
		ArrayList<Mezo> szomszedok = holvagyok.getSzomszedok();
		
		// ha még nem járt le a szag
		if(elteltKorok < 7)
		{
			//minden szomszéd mezőbe be broadcastolunk
			for(Mezo m : szomszedok)
			{
				if(m!=null)
					m.ittVan(this);
			}
			elteltKorok++;
		}// ha már lejárt a szag
		else//if(elteltKorok == 2)
		{
			// ha már lejárt a szag, akkor eltüntetjük a pályáról
			holvagyok.levesz(this);
			nyilvantarto.leiratkozas(this);
			holvagyok = null;
		}
	}
	
	/**
	 * A vele egy Mezőn levő SzagSpray eltünteti a Szagot.
	 * @param szs Egy SzagSpray objektum.
	 */
	public void ittVan(SzagSpray szs)
	{
		if(!szs.holvagyok().equals(this.holvagyok)) return;
		// 22. szekvenciadiag alapján
		holvagyok.levesz(this);
		holvagyok = null;
		nyilvantarto.leiratkozas(this);
	}
	
	public void ittVan(Hangyaboly hangyaboly)
	{
		if(!hangyaboly.holvagyok().equals(this.holvagyok)) return;
		
		holvagyok.levesz(this);
		nyilvantarto.leiratkozas(this);
		holvagyok = null;
	}
	
	public String kiir()
	{
		return "S(" + azonosito + ")";
	}
}